#ifndef MINIBANK_TRANSACTION_HH
#define MINIBANK_TRANSACTION_HH

#include <string>

namespace minibank {

enum class TransactionType {
    Deposit,
    Withdraw,
    Transfer
};

class Transaction {
public:
    // Rule of Three
    Transaction();
    Transaction(const Transaction& other);
    Transaction& operator=(const Transaction& other);
    ~Transaction();

    // Parameterized constructor
    Transaction(const std::string& id, TransactionType type, double amount,
                const std::string& note, const std::string& target = "");

    // Convert to string
    std::string toString() const;

    // Data members
    std::string id;
    TransactionType type;
    double amount;
    std::string note;
    std::string targetAccountId;  // Target account for transfer, empty otherwise
};

} // namespace minibank

#endif // MINIBANK_TRANSACTION_HH